
関数って、なんですか?

関数とは、決まった処理を実行してくれる部品みたいなものだよ。
同じ処理を何度も行わないといけない場合、関数を作ることによって、
記述ミスも防げるし、管理も楽になるんだ。
例を挙げていくから、一緒にみていこう。
関数の定義
関数を定義するには、予約語のfunctionを使います。予約語については、「第2回 スクリプト言語Luaの書き方(基本概念)」を読んでね。
function 関数名(引数1, 引数2, ..)
処理
end
引数とは、関数の呼び出し元から渡される値のことです。例えば、Keisanという関数名を作ったとします。Keisan関数は渡された引数を足し算する機能を持っています。
呼び出し元では、Keisan関数に1と10を渡して計算結果を受け取っています。
function Keisan(a, b) -- aに1, bに10が入る。このa, b を関数の引数という。
return a + b -- return でa+bの計算結果を返す。
end
result = Keisan(1, 10) -- result にKeisanの結果を入れる。
print("結果は、" .. result) -- 実行結果は、11。
※引数は、オプション扱いなのであってもなくても良いです。
戻り値
戻り値とは、関数から返ってくる結果のことです。関数から戻り値を返すにはreturnを記述します。
function 関数名(引数1, 引数2, ..)
処理
return 戻り値
end
Luaは、複数の戻り値を返すことができます。複数の戻り値を返すには return 戻り値1, 戻り値2, 戻り値3のように戻り値をカンマ区切りで記述します。複数の戻り値を受け取る側は、同じようにカンマ区切りで変数を列挙します。
function 関数名(引数1, 引数2, ..)
処理
return 戻り値1, 戻り値2, 戻り値3
end
value1, value2, value3 = 関数名(引数1, 引数2, ..)
可変引数
Lua の関数は最後の引数に … を指定すると、可変個の引数を受け取ることができます。
function Kahencho(...)
local a, b, c = ...
if a then --引数指定があるときprintを実行する
print("a=" ..a)
end
if b then
print("b=" ..b)
end
if c then
print("c=" ..c)
end
end
Kahencho() --実行結果は引数指定なしのため、なし。
Kahencho(1) --実行結果は、a=1
Kahencho(1,10) --実行結果は、a=1, b=10
Kahencho(1,10,100) --実行結果は、a=1, b=10, c=100
引数が三つのドット ... で終わる可変長引数関数に渡される引数は、可変長引数式 (vararg expression) として関数に渡されます。詳しくは、Luaの公式サイト 3.4.11. 関数定義を読んでね。
無名関数
第2回 スクリプト言語Luaの書き方(基本概念)で記載していますが、Luaは、動的型付け言語(変数に型がない)であり、変数に入れる値に独自の型があります。function も変数の基本型なのです。
関数に関数名を付けずに変数として扱うことができます。関数名がない関数を無名関数と言います。
変数 = function(引数)
処理
end



コメント